home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / COMMUNIC / 0132.ZIP / INNOCIO.PAS < prev    next >
Pascal/Delphi Source File  |  1985-11-02  |  3KB  |  102 lines

  1. {******************************************************}
  2. {                                                      }
  3. {     HARDWARE DEPENDENT MODULE FOR COM-PACK           }
  4. {                                                      }
  5. {  Contains serial I/O and modem control routines.     }
  6. {                                                      }
  7. {                for INNOCOMP-2                        }
  8. {                                                      }
  9. {******************************************************}
  10.  
  11. CONST
  12.   ADATA  = $A0;               { DATA IN / OUT PORT }
  13.   AIENR  = $A1;               { INTERRUPT ENABLE REGISTER: }
  14.  
  15.   ALCR   = $A3;               { LINE CONTROL REGISTER: }
  16.   AWLS8  = $03;                      {  - 8 BITS }
  17.   ADLAB  = $80;                      { DIVISOR LATCH ACCESS BIT }
  18.  
  19.   AMCR   = $A4;                { MODEM CONTROL REGISTER: }
  20.   ADTR   = $01;                      { DATA TERMINAL READY }
  21.   ARTS   = $02;                      { REQUEST TO SEND }
  22.   AOUT1  = $04;                      { OUT1- CONTROL }
  23.   AOUT2  = $08;                      { OUT2- CONTROL }
  24.  
  25.   ALSR   = $A5;                { LINE STATUS REGISTER: }
  26.   ADR    = $01;                      { RECEIVED DATA READY }
  27.   ABI    = $10;                      { BREAK INTERRUPT }
  28.   ATHRE  = $20;                      { TX HOLDING REGISTER EMPTY }
  29.   ATSRE  = $40;                      { TX SHIFT REGISTER EMPTY }
  30.  
  31.   AMSR   = $A6;                { MODEM STATUS REGISTER: }
  32.   ADCTS  = $01;                      { CTS CHANGED }
  33.   ADDSR  = $02;                      { DSR CHANGED }
  34.   ACTS   = $10;                      { CLEAR TO SEND (CTS) }
  35.   ADSR   = $20;                      { DATA SET READY (DSR) }
  36.   ARI    = $40;                      { RING INDICATOR (RI) }
  37.   ARLSD  = $80;                      { RX LINE SIGNAL DETECT (RLSD) }
  38.  
  39.   ADLLS  = $A0;                { DIVISOR LATCH, LSB (IFF ADLAB ACTIVE) }
  40.   ADLMS  = $A1;                { DIVISOR LATCH, MSB (IFF ADLAB ACTIVE) }
  41.  
  42.   VAR  STATUSBYTE : BYTE;
  43.  
  44. {  The implementation of following routines  }
  45. {  depends entirely on the hardware present  }
  46.  
  47. PROCEDURE HANG_UP;                { Hang-up phone }
  48.   BEGIN
  49.  
  50.   END;
  51.  
  52. PROCEDURE OFF_HOOK;                { Connect phone }
  53.   BEGIN
  54.     PORT[AMCR]:= ARTS + ADTR;     (* set rts and dtr *)
  55.   END;
  56.  
  57. PROCEDURE PURGE_MODEM;        { Clear modem input }
  58.   VAR TRASH : BYTE;
  59.   BEGIN
  60.     TRASH := PORT[ADATA];
  61.     TRASH := PORT[ADATA];
  62.   END;
  63.  
  64. PROCEDURE INIT_MODEM;        { Set-up serial I/O and modem hardware }
  65.   BEGIN
  66.     off_hook;
  67.     purge_modem;
  68.   END;
  69.  
  70. FUNCTION MODEM_INPUT_READY : BOOLEAN; { Return true if reciever ready }
  71.   BEGIN
  72.     STATUSBYTE:= PORT[ALSR];
  73.     MODEM_INPUT_READY := ((STATUSBYTE AND ADR) = ADR);
  74.   END;
  75.  
  76. FUNCTION MODEM_INPUT : byte;        { Read in char from modem }
  77.   BEGIN
  78.     REPEAT UNTIL MODEM_INPUT_READY;
  79.     MODEM_INPUT:= PORT[ADATA];
  80.   END;
  81.  
  82. FUNCTION MODEM_OUTPUT_READY : BOOLEAN; { Return true if transmitter ready }
  83.   BEGIN
  84.     STATUSBYTE:= PORT[ALSR];
  85.     MODEM_OUTPUT_READY := ((STATUSBYTE AND ATHRE) = ATHRE);
  86.   END;
  87.  
  88. PROCEDURE MODEM_OUTPUT (CH : byte);        { Write char out to modem }
  89.   begin
  90.     REPEAT UNTIL MODEM_OUTPUT_READY;
  91.     PORT[ADATA]:= CH;
  92.   END;
  93.  
  94. FUNCTION GETKBDATA : CHAR;   (* GET KEYBOARD DATA *)
  95.   BEGIN
  96.     getkbdata := chr(bdos (6,$FF));
  97.   end;
  98.  
  99. = CH;
  100.   END;
  101.  
  102. FUNCTION GETKBDATA : CHAR;   (* GET KEYBOARD